package com.situ.mall.web.controller;

import com.situ.mall.common.entity.OrderInfo;
import com.situ.mall.common.service.IOrderInfoService;
import com.situ.mall.common.util.RequestUtil;
import com.situ.mall.common.vo.PayVO;
import com.situ.mall.common.vo.TableVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author yangkx
 * @create 2023-09-25-11:03
 */
@Controller
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private IOrderInfoService orderInfoService;

    //打开我的订单页面
    @GetMapping("/myOrders")
    public String myOrders(){
        return "myOrders";
    }

    //查询所有订单（Ajax）
    @GetMapping("/myOrdersList")
    @ResponseBody
    public TableVO myOrdersList(String status, String keyword, Integer page, Integer limit){
        //取出当前登陆会员的id
        Integer memberId = (int) RequestUtil.getSession().getAttribute("currentId");
        //查该会员所有订单
        return orderInfoService.selectByMemberId(status, keyword, page, limit, memberId);
    }

    //保存订单，转到支付界面
    //接所有选中的购物车id（组合成的字符串），和选中的收货地址id，组合成一个订单
    @PostMapping("/save")
    public String save(Model model, String ids,Integer locationId){
        //TODO 保存订单
        PayVO payVO = orderInfoService.saveOrder(ids,locationId);
        //带着所有数据重定向到支付界面
        model.addAttribute("orderPay", payVO);
        return "toPay";
    }

    //确定支付方式，并支付
    @PostMapping("/setType")
    public void setType(Integer orderId, String payType){
        OrderInfo oi = new OrderInfo();
        oi.setId(orderId);
        oi.setPayType(payType);
        //有值的更新，没有值的不更新
        orderInfoService.updateById(oi);
    }

}
